package com.ruowei.config;

import java.time.ZoneId;
import java.util.*;

/**
 * Application constants.
 */
public final class Constants {

    // Regex for acceptable logins
    public static final String LOGIN_REGEX = "^[_.@A-Za-z0-9-]*$";

    public static final String SYSTEM_ACCOUNT = "system";
    public static final String DEFAULT_LANGUAGE = "en";
    public static final String ANONYMOUS_USER = "anonymoususer";

    public static final String TAG_LOGIN = "00-登录";
    public static final String TAG_BASIC_INFO = "01-0-基本情况";
    public static final String TAG_RESUME = "01-1-基本情况（个人简历）";
    public static final String TAG_SALARY = "02-1-收入情况（工资）";
    public static final String TAG_IEXTRA_INCOME = "02-2-收入情况（其他收入）";
    public static final String TAG_MARRIAGE = "03-婚姻情况";
    public static final String TAG_SPOUSEPOST = "04-1-从业情况（配偶）";
    public static final String TAG_CHILDPOST = "04-2-从业情况（子女及其配偶）";
    public static final String TAG_RELPOST = "04-3-从业情况（近亲属在系统内）";
    public static final String TAG_ESTATE = "05-1-资产情况（房产）";
    public static final String TAG_STOCK = "05-2-资产情况（股票）";
    public static final String TAG_INVEST = "05-3-资产情况（投资入股）";
    public static final String TAG_FUND = "05-4-资产情况（基金）";
    public static final String TAG_INSURANCE = "05-5-资产情况（投资型保险）";
    public static final String TAG_ENTERPRISE = "05-6-资产情况（经商办企业）";
    public static final String TAG_OS_DEPOSITS = "05-7-资产情况（国（境）外的存款）";
    public static final String TAG_OS_INVEST = "05-8-资产情况（国（境）外的投资）";
    public static final String TAG_PASSPORT = "06-1-出国情况（普通护照）";
    public static final String TAG_ABROARD = "06-2-出国情况（因私出国）";
    public static final String TAG_SPPASSPORT = "06-3-出国情况（港澳、台湾通行证）";
    public static final String TAG_SPECIALZONE = "06-4-出国情况（因私往来港澳、台湾）";
    public static final String TAG_IMMIGRATION = "06-5-出国情况（配偶、子女移居国（境）外）";
    public static final String TAG_OSWORK = "06-6-出国情况（配偶、子女虽未移居国（境）外，但连续在国（境）外工作，生活一年以上）";
    public static final String TAG_CRIMINAL = "07-刑责情况";
    public static final String TAG_EVENT = "08-重大事项";
    public static final String TAG_HONEST_EXCEL = "09-廉洁档案Excel解析";
    public static final String TAG_OPERATE_LOG = "10-操作日志";
    public static final String TAG_CONVERSATION = "11-诫勉谈话档案";
    public static final String TAG_REPORT = "12-线索处置";
    public static final String TAG_VIOLATION = "13-违规违纪";
    public static final String TAG_DELETE = "14-批量档案删除";
    public static final String TAG_PDF_EXPORT = "15-PDF导出";
    public static final String TAG_PERSONNEL_ORGANIZATION = "15-基本情况-组织机构";
    public static final String TAG_INSTITUTION = "16-纪监制度";
    public static final String TAG_DOCUMENT = "17-公文流转";
    public static final String TAG_THREAD = "18-线索登记";
    public static final String TAG_CASEREVIEW = "19-立案审查";
    public static final String TAG_PETITION = "20-信访件管理";
    public static final String TAG_FORM_INFO = "21-四种形态基本信息";
    public static final String TAG_FORM_SETTING = "22-四种形态预警参数设置";
    public static final String TAG_DOSSIER = "23-案卷管理";
    public static final String TAG_STATISTIC = "24-统计分析";

    public static final String TAG_REGISTER = "23-登入登出日志";
    public static final String TAG_PERSONNEL = "人员信息";
    public static final String TAG_PERSONNELRESUME = "人员信息-个人简历";
    public static final String TAG_MAINMEMBER = "人员信息-主要成员及社会关系";

    public static final String TAG_FILE = "附件信息";
    public static final String TAG_BACKUP = "备份还原";
    public static final String TAG_TODO = "消息待办";
    public static final String TAG_TRADEINFO = "账户交易信息";

    public static final ZoneId DEFAULT_ZONEID = ZoneId.of("Asia/Shanghai");

    public static final Set<String> NMG_CITIES = new HashSet<>(
            Arrays.asList("自治区", "呼和浩特市", "赤峰市", "呼伦贝尔市", "兴安盟",
                    "通辽市", "乌兰察布市", "锡林郭勒盟", "包头市", "巴彦淖尔市",
                    "阿拉善盟", "鄂尔多斯市")
    );

    public static final Set<String> PETITION_HANDLE_METHODS = new HashSet<>(
            Arrays.asList("自办", "转办", "交办")
    );

    public static final Set<String> PETITON_SOURCES = new HashSet<>(
            Arrays.asList("自治区纪委监委转", "内蒙古银保监局转", "自治区联社领导转",
                    "盟市纪委监委转", "公众号", "举报信箱", "其他")
    );

    public static final Set<String> PETITION_INFORMEE_CLASSES = new HashSet<>(
            Arrays.asList("自治区联社中层干部", "自治区联社其他人员", "基层行社一把手",
                    "基层行社其他班子成员", "基层行社中层干部", "基层行社其他人员", "单位")
    );

    public static final Set<String> PETITION_CONTENT_CLASSES = new HashSet<>(
            Arrays.asList("违规发放贷款以贷谋私", "违规招录和提拔人员", "经商办企业",
                    "违规基建", "违规装修房屋", "大宗物品采购", "工作作风问题", "诉求类",
                    "其他违反八项规定精神的问题")
    );

    public static final Set<String> PETITION_RESULT_CLASSES = new HashSet<>(
            Arrays.asList("违纪行为", "职务违法犯罪行为", "申诉", "批评建议",
                    "业务范围外", "无实质内容的信访举报")
    );

    public static final List<String> CLUE_HANDLE_RESULT_CLASSES =
            Arrays.asList("第一种形态", "第二种形态", "第三种形态", "第四种形态");

    // 分办候选角色
    public static final List<String> CASE_CANDIDATE = Arrays.asList(
            "ROLE_JJRY_AJCB", "ROLE_JJRY_AJSL", "ROLE_JJRY_JDGL"
    );

    // 审批候选角色
    public static final List<String> SHENPI_CANDIDATE = Arrays.asList(
            "ROLE_JJRY_JCZR", "ROLE_JJRY_JCFZZ", "ROLE_JJRY_JCZZ", "ROLE_JJRY_DWSJ"
    );

    // 审核意见角色
    public static final List<String> SHENHEYIJIAN = Collections.singletonList(
            "ROLE_JJRY_JCZR"
    );

    // 领导批示
    public static final List<String> LINGDAOPISHI = Arrays.asList(
            "ROLE_JJRY_JCFZZ", "ROLE_JJRY_JCZZ", "ROLE_JJRY_DWSJ"
    );

    // 组内领导
    public static final List<String> ZUNEILINGDAO = Arrays.asList(
            "ROLE_JJRY_JCFZZ", "ROLE_JJRY_JCZZ"
    );

    // 党委书记
    public static final List<String> DANGWEISHUJI = Collections.singletonList(
            "ROLE_JJRY_DWSJ"
    );

    public static final String XFJ_DEF_KEY = "nmnxxfj_v1";
    public static final String XFGJ_DEF_KEY = "nmnxxfgl_v4";

    public static final String ROLE_JJRY = "ROLE_JJRY_%";
    public static final String ROLE_BJRY = "ROLE_JDDX_%";

    private Constants() {
    }
}
